#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include<QKeyEvent>
#include <QTimer>
#include<QRandomGenerator>
#include<QRectF>


QT_BEGIN_NAMESPACE
namespace Ui {
class mywidget;
}
QT_END_NAMESPACE
//蛇的表示
//
//1. 按键处理
//2.使用定时器
//   2.1 关联信号槽
//   2.2 启动定时器
//   2.3 实现超时处理函数
//3.渲染绘图
enum Direct
{
    DIR_LEFT,
    DIR_RIGHT,
    DIR_UP,
    DIR_DOWN
};

class mywidget : public QWidget
{
    Q_OBJECT

public:
    mywidget(QWidget *parent = nullptr);
    ~mywidget();

protected:
    //渲染绘图
    void paintEvent(QPaintEvent *event);

protected:
    void addTop();
    void addDown();
    void addRight();
    void addLeft();

    void addNewReward();
    bool checkBoundaryCollision();
    bool checkContact();

    //按键处理
    void keyPressEvent(QKeyEvent *event);

    void deleteLast();

private:
    Ui::mywidget *ui;
    int moveFlag =DIR_UP;
    bool gameStart =true;

    //定时器
    QTimer *timer;
    int time =100;//超时时间间隔

    //蛇
    QList <QRectF> snake;

    //奖励
    QRectF rewardNode;

    //小方块的宽、高
    int nodeWidth=20;
    int nodeHeight=20;



protected slots:
    void timeout();
};


#endif // MYWIDGET_H
